////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  parametermodule.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef PARAMETERMODULE_H
#define PARAMETERMODULE_H

#include "parametertypes.h"
#include "parameterfilesymboltable.h"

class ParameterSetManager;

class ParameterModule
{
public:
    ParameterModule(const CHAR* name,
                    UINT16      major,
                    UINT16      minor,
                    UINT32      patch,
                    UINT32      modeId,
                    UINT16      mode,
                    UINT16      subMode,
                    UINT32      group)
    {
        INT32 nameSize = (INT32)PARAMETER_STRLEN(name) + 1;

        ID      = 0;
        Major   = major;
        Minor   = minor;
        Patch   = patch;
        ModeId  = modeId;
        Mode    = mode;
        SubMode = subMode;
        Group   = group;
        Next    = NULL;
        Name    = PARAMETER_NEW CHAR[nameSize];
        PARAMETER_STRCPY(Name, nameSize, name);
        ParameterFileSymbolTableEntry::GetType(Type, name);
    }

    virtual ~ParameterModule()
    {
        PARAMETER_DELETE[] Name;
        PARAMETER_DELETE Next;
        Next = NULL;
    }

    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const = 0;

    CHAR*  Name;
    CHAR   Type[ParameterFileSymbolTableEntry::TYPE_LEN + 1];
    UINT32 ID;
    UINT16 Major;
    UINT16 Minor;
    UINT32 Patch;
    UINT32 ModeId;
    UINT16 Mode;
    UINT16 SubMode;
    UINT32 Group;
    ParameterModule* Next;
};

#endif

